package com.wei.czz.framework.common.controller;

import com.wei.czz.common.annotation.Auth;
import com.wei.czz.common.annotation.Resubmit;
import com.wei.czz.common.dto.common.sms.SmsLogDto;
import com.wei.czz.common.dto.common.sms.SmsLogPageEnumDto;
import com.wei.czz.common.tool.PageDto;
import com.wei.czz.common.tool.Result;
import com.wei.czz.common.vo.common.sms.SmsLogFormVo;
import com.wei.czz.framework.common.manager.SmsLogManager;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;


/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-06-14 21:23:18
 * className: SmsLogController
 * version: 1.0
 * description:
 */
@RestController
@RequestMapping("/sms-log")
@AllArgsConstructor
public class SmsLogController {

    private static final Logger log = LoggerFactory.getLogger(SmsLogController.class);

    private final SmsLogManager smsLogManager;

    /**
     * 分页获取短信发送记录接口
     * <p>
     * 调用方：
     *  1、浏览器-后台-短信发送记录管理页面调用
     * <p>
     * 此接口会校验是否重复提交
     * @param smsLogFormVo 参数对象
     * @return 短信发送记录分页数据
     */
    @Resubmit(spEL = "'getSmsLogPageList' + #userPo.userId + '-' + #smsLogFormVo", message = "分页获取短信发送记录")
    @PostMapping("/page/list")
    @Auth(permit = "sms:log:list")
    public Result<PageDto<SmsLogDto>> getSmsLogPageList(@RequestBody SmsLogFormVo smsLogFormVo) {
        log.info("开始分页获取短信发送记录业务。{}", smsLogFormVo);

        PageDto<SmsLogDto> pageDto = smsLogManager.getSmsLogPageList(smsLogFormVo);

        log.info("分页获取短信发送记录业务结束");
        return Result.success(pageDto);
    }

    /**
     * 获取短信发送记录页面枚举接口
     * <p>
     * 调用方：
     *  1、浏览器-后台-短信发送记录管理页面调用
     * @return 结果
     */
    @GetMapping("/page/enum")
    @Auth(permit = "sms:log:list")
    public Result<SmsLogPageEnumDto> getSmsLogPageEnum() {
        log.info("开始获取短信发送记录页面枚举业务");

        SmsLogPageEnumDto smsLogPageEnumDto = smsLogManager.getSmsLogPageEnum();

        log.info("获取短信发送记录页面枚举业务结束");
        return Result.success(smsLogPageEnumDto);
    }

}
